1. Field of the Invention
The invention relates generally to serial attached SCSI (“SAS”) domains and more specifically to methods and structures for more easily detecting that devices in the SAS domain are properly functioning as they are discovered or otherwise detected in the SAS domain.
2. Discussion of Related Art
Small Computer Systems Interface (“SCSI”) is a set of American National Standards Institute (“ANSI”) standard electronic interface specification that allow, for example, computers to communicate with peripheral hardware. Common SCSI compatible peripheral devices may include: disk drives, tape drives, CD drives (“CD-ROM”, “CD-RW”, etc), DVD drives, printers and scanners. SCSI as originally created included both a command/response data structure specification and an interface and protocol standard for a parallel bus structure for attachment of devices. SCSI has evolved from exclusively parallel interfaces to include both parallel and serial interfaces. “SCSI” is now generally understood as referring either to the communication transport media (parallel bus structures and various serial transports) or to a plurality of primary commands common to most devices and command sets to meet the needs of specific device types as well as a variety of interface standards and protocols.
The collection of primary commands and other command sets may be used with SCSI parallel interfaces as well as with serial interfaces. The serial interface transport media standards that support SCSI command processing include: Fibre Channel, Serial Bus Protocol (used with the Institute of Electrical and Electronics Engineers 1394 FireWire physical protocol; “IEEE 1394”) and the Serial Storage Protocol (SSP).
SCSI interface transports and commands are also used to interconnect networks of storage devices with processing devices. For example, serial SCSI transport media and protocols such as Serial Attached SCSI (“SAS”) and Serial Advanced Technology Attachment (“SATA”) may be used in such networks. These applications are often referred to as storage networks. Those skilled in the art are familiar with SAS and SATA standards as well as other SCSI related specifications and standards. Information about such interfaces and commands is generally obtainable at the website http://www.t10.org.
Such SCSI storage networks are often used in large storage systems having a plurality of disk drives to store data for organizations and/or businesses. The network architecture allows storage devices to be physically dispersed in an enterprise while continuing to directly support SCSI commands directly. This architecture allows for distribution of the storage components in an enterprise without the need for added overhead in converting storage requests from SCSI commands into other network commands and then back into lower level SCSI storage related commands.
A SAS network typically comprises one or more SAS initiators coupled to one or more SAS targets often via one or more SAS expanders. In general, as is common in all SCSI communications, SAS initiators initiate communications with SAS targets. The expanders expand the number of ports of a SAS network domain used to interconnect SAS initiators and SAS targets (collectively referred to as SAS devices or SAS device controllers).
In general, a SAS initiator directs information to a SAS target device through ports of one or more SAS expanders in the SAS domain. A “port” in SAS terminology is a logical concept. A port may comprise one or more physical links in a SAS domain. Such physical links are often referred to as PHYs in the terminology of SAS domains. A port may use a single PHY or, if the port is configured as a wide port, may use multiple PHYs logically grouped to provide higher bandwidth.
When a SAS domain starts up, one or more initiator devices perform a “discovery” process in accordance with the SAS specifications so that each SAS component may generate information indicative of the SAS domain topology. In other words, the discovery process specified by the SAS specifications permits each SAS device and each SAS expander in the domain to discover information about immediate neighbors coupled to its ports as well as information about other devices and expanders coupled to ports of neighboring components. Thus, each SAS device and SAS expander in a SAS domain may acquire information regarding the overall geometry or topology of the SAS domain.
The discovery process specified by the SAS specifications does not necessarily assure that each discovered device is properly functioning. Rather, the discovery process as specified in the SAS specifications calls for only detecting presence of the SAS component—regardless of whether it is functioning properly in other respects. Thus the discovery process could discover a device that is functional enough to respond to the exchanges associated with the discovery process but not fully functional to perform user/system generated requests. For example, a disk drive may respond adequately to messages associated with the discovery process but may be incapable or reading information from the disk drive recording media.
Some present techniques perform a test sequence after the discovery process is completed. As presently practiced, a host system application or system process is launched that tests the discovered devices to assure that each device appears to operate properly to process I/O requests. Such a host system process consumes valuable resources in the host system. When launched from a host system, the process may be started at host system power up or host system reset. However, there may be other events in the operation of the SAS domain not readily known to the host system that could require similar testing. For example, replacement of devices in the domain, receipt of broadcast change primitives, sensing a link being temporarily down and then restored to normal operation, etc. Host systems are not necessarily informed of these events in any manner that would allow re-launching the test process.
It is therefore evident from the above discussion that a need exists for improved solutions in a SAS domain to rapidly identify whether devices associated with a SAS domain are properly operable without imposing significant burden on resources of the attached host systems.